<?php

class Application_Model_ImputacionElectricidad extends Sgit_Model
{
    protected $_name = 'imputacion_electricidad';


    function getLastImputacion($id_zona)
    {
        $select = $this->getAdapter()->select();
        $select->from(array($this->_name))->where("id_zona = ?", $id_zona, 'INTEGER')->order(array('anio desc', 'mes desc'))->limit(1);
        return $this->getAdapter()->fetchRow($select);
    }


    function getImputacion($id)
    {

        $row1 = $this->getRow($id);
        
        $fecha = new Zend_Date();
        $fecha->setDay(1)->set($row1['mes'], Zend_Date::MONTH)->set($row1['anio'], Zend_Date::YEAR);
        
        $row1['fecha_imputacion'] = $fecha->get(Zend_Date::ISO_8601);
    
        $fecha->sub(1, Zend_Date::MONTH);

        $row1['fecha_consumo'] = $fecha->get(Zend_Date::ISO_8601);
        $row1['potencia_it'] = Sgit_Util_Potencia::run($row1['consumo_it'], $fecha);
        $row1['potencia_servicios'] = Sgit_Util_Potencia::run($row1['consumo_servicios'], $fecha);
        $row1['potencia_total'] = Sgit_Util_Potencia::run($row1['consumo_total'], $fecha);

        $row2 = $this->getRow(array('id_zona = ?' => $row1['id_zona'], 'mes = ?' => $fecha->get(Zend_Date::MONTH_SHORT), 'anio = ?' => $fecha->get(Zend_Date::YEAR)));
        $fecha2 = new Zend_Date();
        $fecha2->setDay(1)->set($row2['mes'], Zend_Date::MONTH)->set($row2['anio'], Zend_Date::YEAR)->sub(1, Zend_Date::MONTH);

        $row2['potencia_total'] = Sgit_Util_Potencia::run($row2['consumo_total'], $fecha2);

        if ($row2['potencia_total'])
            $row1['incremento'] = round(100 * ($row1['potencia_total'] - $row2['potencia_total']) / ($row2['potencia_total']), 2);
        else
            $row1['incremento'] = null;

        $m_imp_pro=new Application_Model_ImputacionProyectosElectricidad(); 
        $m_consumo_dc=new  Application_Model_ConsumoDatacenter();
        


        $row1['facturacion']= $m_imp_pro->getFacturacionMes($row1['id_zona'],$row1['fecha_imputacion']);
         
        if($row1['coste']) 
            $row1['ratio_reventa'] = 100*(($row1['facturacion'] / $row1['coste'])-1);
        
        $row1['previous_id']=$row2['id'];

        return $row1;
    }

    function getImputacionResumen($values)
    {

        
        $select = $this->getAdapter()->select()->from(array($this->_name))->order(array('anio desc','mes desc'));
           

        if (is_numeric($values['id_zona']))
            $select->where("id_zona= ?", $values['id_zona']);
        if (is_numeric($values['mes']))
            $select->where("mes= ?", $values['mes']);
        if (is_numeric($values['anio']))
            $select->where("anio= ?", $values['anio']);


        $rows= $this->getAdapter()->fetchAll($select);
        
        foreach($rows as &$row1)
        {


            $fecha = new Zend_Date();
            $fecha->setDay(1)->set($row1['mes'], Zend_Date::MONTH)->set($row1['anio'], Zend_Date::YEAR);
            
            $row1['fecha_imputacion'] = $fecha->get(Zend_Date::ISO_8601);
            $row1['fecha'] = $fecha->toString('MMM-yyyy');
            

        
            $fecha->sub(1, Zend_Date::MONTH);
    
            $row1['fecha_consumo'] = $fecha->get(Zend_Date::ISO_8601);
            $row1['potencia_it'] = Sgit_Util_Potencia::run($row1['consumo_it'], $fecha);
            $row1['potencia_servicios'] = Sgit_Util_Potencia::run($row1['consumo_servicios'], $fecha);
            $row1['potencia_total'] = Sgit_Util_Potencia::run($row1['consumo_total'], $fecha);

            $row2 = $this->getRow(array('id_zona = ?' => $row1['id_zona'], 'mes = ?' => $fecha->get(Zend_Date::MONTH_SHORT), 'anio = ?' => $fecha->get(Zend_Date::YEAR)));
            if($row2)
            {
               $fecha2 = new Zend_Date();
                $fecha2->setDay(1)->set($row2['mes'], Zend_Date::MONTH)->set($row2['anio'], Zend_Date::YEAR)->sub(1, Zend_Date::MONTH);
                $row2['potencia_total'] = Sgit_Util_Potencia::run($row2['consumo_total'], $fecha2);
            }
            
            if ($row2['potencia_total'])
                $row1['incremento'] = round(100 * ($row1['potencia_total'] - $row2['potencia_total']) / ($row2['potencia_total']), 2);
            else
                $row1['incremento'] = null;
    
            $m_imp_pro=new Application_Model_ImputacionProyectosElectricidad(); 
    
    
            $row1['facturacion']= $m_imp_pro->getFacturacionMes($row1['id_zona'],$row1['fecha_imputacion']);
            $row1['facturado_compania']= $row1['coste'];
            
            
             
            if($row1['coste']) 
                $row1['ratio_reventa'] = 100*(($row1['facturacion'] / $row1['coste'])-1);
            
            
            
        }
        


        return $rows;
        
        
    }
    
    function getComite($cambio_aceptado,$fecha_peticion_cambio,$propone=null)
    {
       
        
        
        
        $select = $this->getAdapter()->select();
        $select->from(array($this->_name))->where("facturacion IS NOT NULL ")->where("objeto_cambio = 1 ");
        
        if($cambio_aceptado=='SI') 
            $select->where("cambio_aceptado = ?",'SI');
        elseif($cambio_aceptado=='NO') 
            $select->where("cambio_aceptado = ?",'NO');
        else $select->where("cambio_aceptado IS NULL");
           
        if(!is_null($propone))
        {
            $select->where("id_usuario = ?",$propone,INTEGER);
        }   
           
            
 
        Sgit_Util_dateRange::run($select,$fecha_peticion_cambio,'fecha_peticion_cambio');
        

        return $this->getAdapter()->fetchAll($select);

    }
    
    
    
    
    
    public function changeComite($id, $valor,$notas)
    {
        
        $row=$this->getRow($id);
        
        if ($valor == 'SI'){
            $update['publicado'] = 1;
            $update['fecha_publicacion']=date('Y-m-d');
            $update['cambio_aceptado']=$valor;
        }else{
            $update['publicado'] = 0;
            $update['fecha_publicacion']=null;
            $update['cambio_aceptado']=$valor;
        }

        $update['responde_cambio']=$this->_auth->getIdentity()->id;
        $update['notas_cambio']=$notas;
        
        
        $result= $this->updateRow($update,$id);

    
        if($result['status']=='ok'){
            
            $fecha=new Zend_Date();
            $fecha->setDay(1)->set($row['mes'],Zend_Date::MONTH_SHORT)->set($row['anio'],Zend_Date::YEAR);
            
            /*
            *Envio correo administrativos
            */

            if($valor=='SI'){
                
                $msg='Ya está disponible en Viriathus  la imputación y facturación de electricidad correspondiente a '.$fecha->toString('MMMM yyyy') .' de '.Sgit_Cache::single()->model('Datacenter')->getKey($row['id_zona']); 
                $msgadmin['asunto'] = 'Imputación/Facturación Electricidad '.$fecha->toString('MMMM yyyy').' '.Sgit_Cache::single()->model('Datacenter')->getKey($row['id_zona']);
                $msgadmin['body'] = $msg;
                $msgadmin['destinatarios']=Sgit_Util_UserByGroup::run(53);
                $msgadmin['destinatariosCC'] = array($row['usuario_factura'],34);
                $msgadmin['id_zona'] = $row['id_zona'];
                $msgadmin['tipo'] = 'Otros';
                $msgadmin['de'] = $this->_auth->getIdentity()->id;

				$mail=new Sgit_Mail();
				$mail->sendMsg($msgadmin);
            }
           
                      
            if($valor=='NO'){
                $entrada['asunto'] = 'Comite de Cambio';
                $entrada['body'] = "Rechazada Imputación/Facturación ".$fecha->toString('MMMM yyyy') .' de '.Sgit_Cache::single()->model('Datacenter')->getKey($row['id_zona']); 
                $entrada['body'] .="<br><br>Comentarios del Comite:<br>$notas</b>";
                $entrada['destinatarios'] = array($row['usuario_factura']);
                $entrada['destinatariosCC'] = array(34);
                $entrada['id_zona'] = $row['id_zona'];
                $entrada['tipo'] = 'Otros';
                $entrada['de'] = $this->_auth->getIdentity()->id;
                
                $mail=new Sgit_Mail();
				$mail->sendMsg($entrada);
            }
          
            return array('status'=>'ok');
        }else {
            return array('status'=>'ko');
        }
        

    }
    
    
    
    
    

}
